Mise à jour le 05/12/2021
Terminal

Terminal

Voici quelques astuces à utiliser dans le terminal.

1. Les raccourcis dans le terminal

1.1 Ctrl + A et Ctrl + E

* Le ctrl + A permet de placer le curseur au début de la ligne du terminal.
* Le ctrl + E permet de placer le curseur à la fin de la ligne du terminal.

1.2 Ctrl + R

Cette action permet de faire une recherche dans l'historique et également de positionner le pointeur de la ligne courante en fonction des caractères écrits.

1.3 Touche Echap suivie de la touche dièse

Cet enchainement Echap+# permet de mettre en commentaire la ligne courante du terminal.
L'interêt derrière cette action est de placer la commande courante dans l'historique du terminal afin de la retrouver plus tard via un Cltr+R.

1.4 Ctrl + W

Cette action permet d'effacer le bout de texte se trouvant avant le curseur.

1.5 Tabulation

La tabulation permet d'autocompléter un début de commande (ou un début de nom de fichier).

📖️️Plus d’astuces : https://www.youtube.com/watch?v=MAPbo8cNkJ8


2. Les symboles

2.1 Les chevrons > >>

2.1.1 Rediriger le stdout dans un fichier

echo "texte" > /tmp/stdout.txt; 
#équivaut à echo "texte" 1> /tmp/stdout.txt


2.1.2 Rediriger le stderr dans un fichier :

cat file_not_found 2> /tmp/stderr.txt


2.1.3 Séparer les deux flux stdout et stderr:

cat file_not_found 1> /tmp/stdout.txt 2> /tmp/stderr.txt


2.1.4 Rediriger les deux flux stdout et stderr dans un même fichier

cat file_not_found &> /tmp/stdouterr.txt


2.2 Les pipes |

Les pipes permettent de transmettre les flux de processus en processus

2.2.1 Compter le nombre de GET au serveur web

cat project_access.log | grep GET | wc -l

# Notes: 
# cat project_access.log : affiche sur le stdout le contenu du fichier
# grep GET : filtre chaque ligne du stdout pour n’afficher que celles contenant le mot GET
# wc -l : compte le nombre de lignes retournées


2.2.2 Utiliser à la fois les pipes et les chevrons

cat project_access.log | grep GET > GET.log


2.3 Les "et commerciaux" &&

Les && permettent de chaîner les processus, chaque processus se base sur le statut du précédent

2.4 Exemple d'utilisation des &&

Ex : exécute le cache clear uniquement si le composer marche

composer install && bin/console cache:clear

Ici la deuxième partie du script s'execute uniquement si la première fonctionne.

2.4.1 Exemple

Afficher le message "Fichier trouvé" uniquement si le fichier existe.

ls /tmp &>/dev/null && echo "Fichier trouvé";

# Note: 
# Le /dev/null permet de masquer visuellement les flux stdout/stderr du ls.


2.5 La variable spéciale $?

la variable $? contient le statut de la dernière commande et prend deux valeurs.

2.5.1 Code retour OK : valeur 0

0 : quand la dernière commande est réussie.

echo “coucou”;
echo $?; // affiche 0


2.5.2 Code retour KO : valeur 1

1 : quand la dernière commande est en erreur.

cat file_not_found;
echo $?; // affiche 1



2.6 Le point virgule ;

Les ; séparent les processus qui s'exécutent séquentiellement sans prendre en compte l’état de leurs prédécesseurs;

echo coucou; cat file_not_found &>/dev/null; echo yahou;

# Résultat : les deux messages s'affichent malgré la commande du milieu qui a échoué.
>coucou
>yahou


A comparer avec cet exemple qui utilise les "et commerciaux" & :

echo coucou && cat file_not_found &>/dev/null && echo yahou;

# Résultat : Seul le premier message s'affiche car le programme s’arrête à cause du cat qui plante.
>coucou